#include<stdio.h>
#include<stdlib.h>
#define maxsize 100 
typedef struct{
	int data[maxsize];
	int top;
}stack;

void initstack(stack *s)
{
	s->top=-1;
}
int isempty(stack *s)
{
	return s->top==-1;
}
void push(stack *s,int value)
{
	s->data[++(s->top)]=value;
}
int pop(stack *s)
{
	return s->data[(s->top)--];
}

int examine1(int num)
{
	while(num>0)
	{
		if(num%10==1)
		{
			return 1;
		}
		num/=10;
	}
	return 0;
}
int countresult(int num)
{
	int count=0;
	while(num>0)
	{
		if(num%10==1)
		{
			count++;
		}
		num/=10;
	}
	return count;
}
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		stack s;
		initstack(&s);
		int sum=0;
		for(int i=1;i<=n;i++)
		{
			if(examine1(i))
			{
				push(&s,i);
				sum+=countresult(i);
			}
		}
		printf("%d\n",sum);
		while(!isempty(&s))
		{
			printf("%d ",pop(&s));
		}
		printf("\n");
	}
	return 0;
}

//		if (!isEmpty(&s)) 
//		{
//       		int first = 1;
//       	 	while (!isEmpty(&s)) 
//			{
//            	if (!first) 
//				{
//                	printf(" ");
//            	}
//            	printf("%d", pop(&s));
//            	first = 0;
//       		}
//   	 	}
//    	printf("\n");
//		return 0;
//	}

